2016-11-14 18 views
3

NotificationListenerServiceが通知を傍受してクリアし、データベースに保存されているPendingIntentの通知を傍受したいが、PendingIntentがシリアル化されていないので、PendingIntend内部のIntentを取得してからintent.toUri()データベースにシリアライズ保存の方法が、今回の問題は、私は例外がある場合にはstartActivity(意図)を呼び出した後に意図非同期化するとき、そこにある:PendingIntentをSQLiteデータベースに保存するにはどうすればよいですか?

私は、データベースまたは他の方法にPendingIntentを保存することができますどのように
Process: com.example.joee.cleardatademo, PID: 20441 
        java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW flg=0x14008000 cmp=com.skype.raider/com.skype.android.app.main.HubActivity (has extras) } from ProcessRecord{4596be88 20441:com.example.joee.cleardatademo/u0a1647} (pid=20441, uid=11647) not exported from uid 11028 
         at android.os.Parcel.readException(Parcel.java:1474) 
         at android.os.Parcel.readException(Parcel.java:1427) 
         at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2104) 
         at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419) 
         at android.app.ContextImpl.startActivity(ContextImpl.java:1065) 
         at android.app.ContextImpl.startActivity(ContextImpl.java:1047) 
         at com.example.joee.cleardatademo.activity.NotificationManagerActivity$2$1.onClick(NotificationManagerActivity.java:110) 
         at android.view.View.performClick(View.java:4569) 
         at android.view.View$PerformClick.run(View.java:18570) 
         at android.os.Handler.handleCallback(Handler.java:733) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:212) 
         at android.app.ActivityThread.main(ActivityThread.java:5151) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:515) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684) 
         at dalvik.system.NativeStart.main(Native Method) 
I/Process: Sending signal. PID: 20441 SIG: 9 
Disconnected from the target VM, address: 'localhost:8633', transport: 'socket' 

? PendingIntentと同じ効果を達成して保存するには?

+0

データベースに保存してアプリを起動する方法を見つけましたか? – Libin

答えて

1

私はあなたが誤解していると思う目的はPendingIntentです。元のアプリケーションとは異なるアプリケーションに含まれているが、同じアクセス許可を持つIntentを起動するために使用されるはずです。これは、他のアプリケーションの内部でアクティビティを起動する方法です。

これは、Androidのバインダーメカニズムを使用して元のターゲットと接続することです。 PendingIntentParcelに保存しても、接続トークンが保存されるため、PendingIntentを元に戻すと元のオブジェクトに接続されます。

しかし、あなたがしたことは、PendingIntentからIntentを引き裂いて起動しようとしています。アクセス権のない元のアプリケーションからアクティビティを起動しようとします。残念ながら、上記のトークンを保存する必要があり、信頼できる方法がないため、PendingIntentをデータベースに保存する方法はありません。 Javaコードにも格納されません。

関連する問題