2011-08-09 10 views
0

これは私のウィジェットのコードです。私は2つのボタンを持っています。次のようにウィジェットからボタンをクリックしてSMSを送信するインテントを使用

import android.app.PendingIntent; 
import android.appwidget.AppWidgetManager; 
import android.appwidget.AppWidgetProvider; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.widget.RemoteViews; 

public class HelloWidget extends AppWidgetProvider { 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 

     //Timer timer = new Timer(); 
     //timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000); 
     String encodedHash = Uri.encode("#"); 

     for (int appWidgetId : appWidgetIds) { 

      Intent callIntent1 = new Intent("android.intent.action.CALL", 
      Uri.parse("tel:*100" + encodedHash)); 
      Intent callIntent2 = new Intent("android.intent.action.CALL", 
       Uri.parse("tel:*200*1" + encodedHash)); 

      PendingIntent pendingIntent1 = 
       PendingIntent.getActivity(context, 0, callIntent1, 0); 

      PendingIntent pendingIntent2 = 
       PendingIntent.getActivity(context, 0, callIntent2, 0); 

      // Get the layout for the App Widget and attach an on-click listener to the button 
      RemoteViews views1 = new RemoteViews(context.getPackageName(), R.layout.widget); 
      views1.setOnClickPendingIntent(R.id.button1, pendingIntent1); 

      RemoteViews views2 = new RemoteViews(context.getPackageName(), R.layout.widget); 
      views2.setOnClickPendingIntent(R.id.button2, pendingIntent2); 

      // Tell the AppWidgetManager to perform an update on the current App Widget 
      appWidgetManager.updateAppWidget(appWidgetId, views1); 
      appWidgetManager.updateAppWidget(appWidgetId, views2); 
     } 
    } 
} 

答えて

1

あなたはsmsmanagerを使用しました....私は、SMSを送信するための3つの以上のボタンを実装したいのですが、そのために意図を実装することはできません...私、私はsmsmanager機能を使用する私のメインのアプリ:

SmsManager sm = SmsManager.getDefault(); 
sm.sendTextMessage(destinationAddress, null, "Hello world", null, null, null); 


あなたのコードに加えて、私はあなたのSMSを送信する処理するためにonReceive WidgetProviderで()メソッドをオーバーライドすることをお勧め。

(にonUpdateで初):

Intent intent = new Intent(context, WidgetProvider.class); 
intent.setAction(ACTION_SEND_SMS); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 

そして:

@Override 
public void onReceive(Context context, Intent intent) { 
    super.onReceive(context, intent); 
    if (intent.getAction().equals(ACTION_SEND_SMS)) { 
     SmsManager sm = SmsManager.getDefault(); 
     sm.sendTextMessage(destinationAddress, null, "Hello world", null, null, null); 
    } 
} 

マニフェストで:

<receiver android:name="com.packagename.WidgetProvider" > 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     <action android:name="com.packagename.ACTION_SEND_SMS"/> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" 
       android:resource="@xml/widget_info" /> 
</receiver> 


基本的な実装は、このようになります。

を助け希望は、編集:

をまずメッセージのリストを定義します。多くの方法があります - この例では、あなたは、文字列の配列に格納することができます

String[] messages = new String[]{"Message for button 1", "Message for button 2", "Message for button 3"}; 
String number = "12344444454" // recipient's mobile number 

初期化SmsManager:

SmsManager sm = SmsManager.getDefault(); 

今すぐあなたのボタンにonClickのリスナーを追加します。

Button button1 = (Button)findViewById(R.id.yourbutton1); 
Button button2 = (Button)findViewById(R.id.yourbutton2); 
Button button3 = (Button)findViewById(R.id.yourbutton3); 

button1.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     //Sending message 1 
     sm.sendTextMessage(number, null, messages[0], null, null, null); 
    } 
}); 

button2.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     //Sending message 2 
     sm.sendTextMessage(number, null, messages[1], null, null, null); 
    } 
}); 

button3.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     //Sending message 3 
     sm.sendTextMessage(number, null, messages[2], null, null, null); 
    } 
}); 
+0

私は使用して SmsManager sms = SmsManager.getDefault();sms.sendTextMessage(phoneNumber、null、message、null、null); ; しかし、このtuの変数には下線が引かれ、エラーは "変数に解決できません"と書かれています。私は同じ番号に3つの異なるメッセージを送信する必要があり、メッセージはあらかじめ定義されていて、 – Goran

+0

上記の – Marqs

+0

の更新された投稿をお願いします。押されたボタンに依存するメッセージを送信する必要があります。メッセージには3つのボタンがあり、1つのメッセージは1つのボタンであり、3つのメッセージは同時に表示されません。 – Goran

関連する問題