# Native Code > برنامه نویسی در Delphi > برنامه نویسی موبایل در Delphi >  استفاده از intent

## e_q_sun

دوستان  سطح دسترسی از طریق intent چجوری میشه گرفت 
من یه برنامه نوشتم که دسترسی ارسال مسیج میخواد
برنامه رو ارسال کردم واسه کافه بازار مبگه باید دسترسی رو از طریق intent بگیری
میشه راهنمایی کنید
ممنون

----------


## nice boy

روش کلی استفاده از intent ها به شکل زیر هست. مثال زیر صفحه یک developer رو در کافه بازار نشون میده. حالا شما می تونید به جای command مثلا دستور مربوط به ارسال message رو قرار بدید
پیشنهاد می کنم اول درباره مفهوم intent در آندروید مطالعه کنید
procedure TBazaarAPI.GoDeveloperPage;
var
  Intent: JIntent;
  Command: string;
begin
  try
    Command := 'bazaar://collection?slug=by_author&aid=' + DeveloperID;
    Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_  VIEW,
      TJnet_Uri.JavaClass.parse(StringToJString(Command)  ));
    Intent.setPackage(StringToJString('com.farsitel.ba  zaar'));
    SharedActivity.startActivity(Intent);
  except
    on E: Exception do
    begin
      raise Exception.Create(E.Message);
    end;
  end;


end;

----------


## e_q_sun

> روش کلی استفاده از intent ها به شکل زیر هست. مثال زیر صفحه یک developer رو در کافه بازار نشون میده. حالا شما می تونید به جای command مثلا دستور مربوط به ارسال message رو قرار بدید
> پیشنهاد می کنم اول درباره مفهوم intent در آندروید مطالعه کنید
> procedure TBazaarAPI.GoDeveloperPage;
> var
>   Intent: JIntent;
>   Command: string;
> begin
>   try
>     Command := 'bazaar://collection?slug=by_author&aid=' + DeveloperID;
> ...


ممنون از پاسختون
در خوصوص intent من هرچی سرچ میکنم چیزی گیرم نمیاد که بدردم بخوره.
میشه راهنمایی کنید
اینطور که متوجه شدم (البته اگه درست فهمیده باشم)توی این کد از api کافه باز استفاده شده
خوب در صورتی که بخوام بدن ارتباط با کافه بازار از intent استفاده کنم چجوریه
در صورت امکان یه لینک مرجعی معرفی کنید که بتونم ازش آموزش بگیرم.ممنون میشم دوست گرامی

----------


## nice boy

جهت ارسال sms می تونید از کد زیر استفاده کنید
uses   Androidapi.JNI.GraphicsContentViewText
  ,Androidapi.JNI.Net, Androidapi.Helpers;


procedure TForm3.SendSMS(aMobile, aMessage: string);
var
  Intent: JIntent;
  Command: string;
begin
  try
    Command := 'smsto:' + aMobile;
    Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_  VIEW,
      TJnet_Uri.JavaClass.parse(StringToJString(Command)  ));
    Intent.putExtra(StringToJString('sms_body'), StringToJString(aMessage));
    SharedActivity.startActivity(Intent);
  except
    on E: Exception do
    begin
      raise Exception.Create(E.Message);
    end;
  end;
end;


در کل زمانیکه شما می خواهید کاری رو در آندروید انجام بدید می تونید یا از داخل برنامه خودتون انجام بدید که احتیاج به Permission مربوطه دارید
یا این کار رو به یک برنامه دیگه بسپارید که این کار با استفاده از intent انجام میشه. یه چیزی مثل ShelExecute در ویندوز می مونه

----------


## nice boy

کد باز کردن یک صفحه وب با intent
procedure TAndroidTools.OpenURL(aURL: string);const
  MethodName = 'OpenURL';
var
  Intent: JIntent;
  Command: string;
begin
  try
    Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_  VIEW,
      TJnet_Uri.JavaClass.parse(StringToJString(aURL)));
    SharedActivity.startActivity(Intent);
  except
    on E: Exception do
    begin
      raise Exception.Create(E.Message);
    end;
  end;
end;

----------


## ابوالفضل عباسی

دوست عزیز niceboy.
کد ارسال پیامک بود(به قرار زیر) چجوری میتونم delivery رو دریافت کنم؟
تا حالا این کار رو انجام دادی؟
procedure SendSMS_InApp (Target,TText:string);
  var
    smsTo: JString;
    smsManager: JSmsManager;

begin
   
    smsManager := TJSmsManager.JavaClass.getDefault;
    smsTo := StringToJString(Target);
    smsManager.sendTextMessage(smsTo, nil, StringToJString(TText), nil,JInt);
   
end;

برای دریافت Delivery جایی که من در فرمان sendText نوشته ام JInt.
این متغیر از نو JpendingIntent هست،حالا چجوری میتونم این رو بخونم برای اینکه یک پیامک ارسال شده یا نه؟

توی سایت stackoverflow سوالم رو مطرح کردم،جواب هم دادن ولی من متوجه نشدم.اگر شما تونسته اید ممنون میشم راهنمایی کنید.

----------


## e_q_sun

دوست گرامی niceboy
من برای ارسال مسیج از کدی استفاده میکنم که جناب عباسی نوشتن
آیا برای intent حتما باید از کدی استفاده کنم که شما معرفی کردی یا از این هم میشه استفاده کرد؟؟

----------


## ابوالفضل عباسی

فرق کد من با کد دوست عزیزم در اینکه:
کد من مستقیم ارسال میکنه اما delivery نداره.
کد niceboy از طریق massenger خود گوشی ارسال مبکنه و باید حتما دکمه Send رو بزنی و delivery داره.
یک بار هردو کد رو استفاده کن،تفاوتش رو متوجه میشی

----------


## nice boy

> دوست گرامی niceboy
> من برای ارسال مسیج از کدی استفاده میکنم که جناب عباسی نوشتن
> آیا برای intent حتما باید از کدی استفاده کنم که شما معرفی کردی یا از این هم میشه استفاده کرد؟؟


باید از کدی که من نوشتم استفاده کنید
شما در پست اول سوالی پرسیدی که جوابش استفاده از intent هست اگه از کدی که آقای عباسی گفتند استفاده کنی که باز مشکل permission خواهی داشت و بازار برنامه ات رو تایید نمی کنه

----------


## nice boy

> دوست عزیز niceboy.
> کد ارسال پیامک بود(به قرار زیر) چجوری میتونم delivery رو دریافت کنم؟
> تا حالا این کار رو انجام دادی؟
> procedure SendSMS_InApp (Target,TText:string);
>   var
>     smsTo: JString;
>     smsManager: JSmsManager;
> 
> begin
> ...


شما باید یک Listener تعریف تا وقتی Delivery اومد بتونی دریافت کنی
در لینک زیر با مثال توضیح داده، از این کد استفاده کن اگه سوالی داشتی در خدمتم
https://stackoverflow.com/questions/...tent-in-delphi

----------


## ابوالفضل عباسی

ممنون ولی
این لینکی که گذاشتی،سوال خودمه تو Stackoverflow.
ولی در پاسخ پایین که یه یونیت نوشته بود من نتونستم باز هم deliver رو دریافت کنم،کلی خطا داشت،رفع عیب هم کردم ولی جواب نداد.

خودت میتونی توضیح روان بدی؟یا مثال درست که کار کنه؟
چون یک پروژه بود خیلی وقته نوشته بودم ولی بدلیل عدم گرفتن deliver نتونستم کاملش کنم و همین طور داره خاک میخوره.
ممنون میشم کمکم کنی

----------


## e_q_sun

با چه دستوری میتونم دسترسی مسیج رو از داخل برنامه بگیرم
کدهایی که معرفی شدن باعث میشه موقع ارسال مسیج صفحه مسیج باز بشه
من میخوام بعد از نصب،موقع اجرا دسترسی رو بگیره بعد بشه مسیج رو مستقیم ارسال کرد

----------

